perm filename DRAFT.1[AP,DBL]1 blob sn#115213 filedate 1974-08-09 generic text, type T, neo UTF8
00100	PUP5 Paper   			First Draft
00200	
00300	1. OUTLINE
00400		Outline
00500		Abstract
00600		Ideas
00700		Implementation
00800		Targets
00900		Performance
01000		Conclusions
01100	
01200	2. ABSTRACT
01300	A system has been implemented which can synthesize large inductive inference
01400	programs.  The ideas upon which it is based are perhaps more significant,
01500	and they are discussed first.  The central idea is that all knowledge and
01600	all control resides in highly structured pieces of code called BEINGS. Each
01700	being has a similar structure, and may therefore be viewed as an extension
01800	of the concept of ACTORS [Hewitt, 1973].  A general description of the 
01900	system which realized these ideas is provided, and its target domain is
02000	discussed.  Some unexpected problems, and some unexpected rewards, were
02100	encountered.  Various measures of performance of Automatic Programming 
02200	Systems are proposed, and we compare the current system to previous ones.
02300	We conclude by pooling our ideas into a "view" of Automatic Programming,
02400	and mention future plans.
02500	
02600	3. IDEAS
02700	
02800		There are, of course, countless ideas embodied in any concrete
02900	project.  Sweeping philosophical assumptions are made simply in trying to
03000	do Automatic Programming [McCarthy,    ].   The Program Understanding
03100	Program (PUP5) should include the best parts of all the best old ideas.
03200	We rely on concepts gleaned from Actors [Hewitt, l973], Demons [Charniak,
03300	1973], heterarchy [Reddy, l973], structured programming [Dijkstra, l973],
03400	assertional data bases and flexible data types [Sacerdoti, l973], pattern-
03500	directed invocation of procedural knowledge [Winograd, l972], the paradigm
03600	of dialogue [Floyd, 1972], and studies on program specification techniques
03700	[Green, l974].  Of course this list is incomplete; sophistocated ideas are
03800	captured in the languages themselves: QLISP [Sacerdoti], INTERLISP 
03900	[Teitelmann], LISP [McCarthy], English [Anonymous].  To this impressive 
04000	store, we add a few new concepts.
04100		First, we resolve the uniformity vs. structure controversy.  The
04200	benefits of the former include easy addition of knowledge [Newell, l973]
04300	and simple methods for combining information [McCarthy,    ].  Structure,
04400	however, is necessary for efficient handling of large amounts of data. In
04500	PUP5, we integrate these two ideas into the concept of Beings.  A being is
04600	a collection of about thirty little bits of LISP code, the answers to thirty
04700	questions about the being. That is, we view a bit of program as equivalent
04800	to its answers to these questions. Every scrap of knowledge, every bit of
04900	control structure should be encoded into beings. There is nothing else in
05000	the system but this interacting community.  Notice that while each being is
05100	highly structured, this structure is uniform over the entire community. Each
05200	being part is itself a little being, etc., and we stop this infinite regress
05300	when the contents of the being part becomes meaninglessly primitive. Each
05400	being is cognizant of the set of thirty questions, and in answering one of
05500	them it may freely ask quesions of other beings (often through nondetermi-
05600	nistic goal statements.)  The reader may glance below at the particular set
05700	of questions used, but we shall discuss our other ideas next.
05800		Since only beings exist, all our code must be written as beings, and
05900	must be written by beings.  A crucial consequence is that some beings must
06000	write code. Our new idea is that the being who knows about X takes charge of
06100	generating code relating to X.  The SORT being can do sorting, and he can
06200	also write specializaed sort routines, and he can answer questions about
06300	sorting.
06400		In a similar vein, some being(s) must do the translation of the 
06500	users' quasi-English inputs into being-usable form.  We choose to have each
06600	being X recognize English related to X.  Thus translation consists of
06700	saying "who can recognize ..." and waiting for a response.
06800		Two more ideas are present, which reflect philosophical constraints.
06900	As in all programming, decisions continually crop up which the system is 
07000	not able to resolve at the time. We have the system spend a significant
07100	effort trying to defer the decision as long as possible, until no progress
07200	can be made without its resolution. At that time, if the system is still
07300	unsure, either the user settles the question of else a backtrack point is
07400	reluctantly set up.  The second bit of philosophy is that most of the
07500	carelessness bugs can be eliminated through this deferral and through
07600	very precise record-keeping.  Humans substitute adaptability for their
07700	faulty brain hardware [Newell, l973], but there is no need for an AP system
07800	to do so.